Skip to content

[English version](/posts/c教程/en-US/02-Language Basics/015-Loops for, while, do-while)

有时,您需要程序一次又一次地重复某些操作、计算、打印语句或检查。您不必多次复制同一行代码,而是使用循环。循环使您的程序高效、紧凑,并且能够处理任何大小的动态数据。

for 循环 ​

一个for循环重复一段代码固定次数。

for (initialization; condition; update) {
    // repeated statements
}

例子:

for (int i = 0; i < 10; i++) {
    printf("%d ", i);
}

解释:

  • 初始化在开始时运行一次(int i = 0)
  • 在每个循环之前检查条件(i < 10)
  • 每次迭代后运行更新(i++)
  • 当条件变为假时循环停止

while 循环 ​

这while当条件保持为真时循环会重复。

int n = 5;
while (n > 0) {
    printf("n = %d\n", n);
    n--;
}

该循环执行只要n大于零。

do-while 循环 ​

这do-while循环保证至少执行一次,因为条件是在主体之后检查的。

int i = 0;
do {
    printf("Running once! i = %d\n", i);
    i++;
} while (i < 1);

它对于输入验证或重复任务直到用户选择停止非常有用。

中断与继续 ​

有时您想在循环中跳过或停止。

for (int i = 1; i <= 10; i++) {
    if (i == 5) continue;   // skip this iteration
    if (i == 8) break;      // stop the loop
    printf("%d ", i);
}

输出:

1 2 3 4 6 7

嵌套循环 ​

您可以将一个循环放入另一个循环中以处理网格、表格或多个维度。

for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 2; j++) {
        printf("i=%d, j=%d\n", i, j);
    }
}

输出:

i=1, j=1
i=1, j=2
i=2, j=1
i=2, j=2
i=3, j=1
i=3, j=2

小代码 ​

这是一个完整的程序,演示了所有三种类型的循环和控制流功能:

#include <stdio.h>
int main(void) {
    // for loop
    printf("for loop:\n");
    for (int i = 1; i <= 5; i++) {
        printf("%d ", i);
    }
    printf("\n\n");
    // while loop
    printf("while loop:\n");
    int n = 3;
    while (n > 0) {
        printf("n = %d\n", n);
        n--;
    }
    printf("\n");
    // do-while loop
    printf("do-while loop:\n");
    int x = 0;
    do {
        printf("x = %d\n", x);
        x++;
    } while (x < 1);
    printf("\n");
    // break and continue
    printf("break and continue demo:\n");
    for (int i = 1; i <= 10; i++) {
        if (i == 5) continue; // skip 5
        if (i == 8) break;    // stop at 8
        printf("%d ", i);
    }
    printf("\n");
    // nested loop
    printf("\nnested loops:\n");
    for (int i = 1; i <= 2; i++) {
        for (int j = 1; j <= 3; j++) {
            printf("(%d,%d) ", i, j);
        }
        printf("\n");
    }
    return 0;
}

编译并运行:

gcc loops_demo.c -o loops_demo
./loops_demo

您将看到所有类型的循环正在运行。

为什么它很重要 ​

循环是每个 C 程序中重复的引擎。它们使以下成为可能:

  • 处理数组、文件和数据列表
  • 运行迭代直到满足条件的算法
  • 有效地自动化重复性任务

在C语言中,循环与CPU本身的运行方式很接近,每次迭代都是逻辑和计算的直接循环。通过掌握它们,您可以控制程序如何移动、停止和重复,这是每个算法的心跳。

自己尝试一下 ​

写一个for打印数字 1 到 100 的循环。

添加一个if在里面只打印偶数。

写一个while从 10 倒数到 1 的循环。

创建一个打印 3×3 乘法表的嵌套循环。

安全地尝试无限循环:

while (1) {
    printf("Press Ctrl+C to stop\n");
    break; // or add a condition to exit
}

一旦您熟悉了循环,您就可以通过控制代码重复次数和条件来构建模式、算法和数据处理器。

本站总访问 — 次